package com.coolingme.general.simple;

/**
 * 环境类角色，定义客户端需要的接口，内部维护一个当前状态角色，并负责具体状态的切换
 *
 * @author wangyue
 * @date 2020-09-25 23:45
 */
public class Context {

    public static final IState STATE_A = new ConcreteStateA();
    public static final IState STATE_B = new ConcreteStateB();

    /**
     * 设置一个默认的角色
     */
    private IState currentState = STATE_A;

    public void setCurrentState(IState currentState) {
        this.currentState = currentState;
    }

    /**
     * 执行状态角色中的方法
     */
    public void handler() {
        this.currentState.handle();
    }

}
